/**
 * 系统配置模块
 * 
 * 职责：
 * 1. 管理系统的所有配置数据
 * 2. 提供配置查询接口
 * 3. 维护号码颜色、生肖、赔率等配置
 * 4. 支持配置的动态更新
 * 
 * @module Config
 * @version 1.0.0
 * @since 2024-01-01
 */

/**
 * 六合彩号码颜色配置
 * 定义了1-49号码对应的颜色分类
 * 
 * @typedef {Object} ColorConfig
 * @property {Array<number>} red - 红波号码数组
 * @property {Array<number>} blue - 蓝波号码数组
 * @property {Array<number>} green - 绿波号码数组
 */
export const colorConfig = {
    red: [1, 2, 7, 8, 12, 13, 18, 19, 23, 24, 29, 30, 34, 35, 40, 45, 46],
    blue: [3, 4, 9, 10, 14, 15, 20, 25, 26, 31, 36, 37, 41, 42, 47, 48],
    green: [5, 6, 11, 16, 17, 21, 22, 27, 28, 32, 33, 38, 39, 43, 44, 49]
};

/**
 * 生肖号码对应配置
 * 定义了十二生肖与号码的对应关系
 * 
 * @typedef {Object} AnimalConfig
 * @property {Array<Animal>} animals - 生肖配置数组
 * @property {Function} getAnimalByNumber - 根据号码获取生肖
 * @property {Function} getAnimalById - 根据ID获取生肖
 */
export const animalConfig = {
    animals: [
        { id: 'rat', name: '鼠', numbers: [6, 18, 30, 42] },
        { id: 'ox', name: '牛', numbers: [5, 17, 29, 41] },
        { id: 'tiger', name: '虎', numbers: [4, 16, 28, 40] },
        { id: 'rabbit', name: '兔', numbers: [3, 15, 27, 39] },
        { id: 'dragon', name: '龙', numbers: [2, 14, 26, 38] },
        { id: 'snake', name: '蛇', numbers: [1, 13, 25, 37, 49], isBenming: true },
        { id: 'horse', name: '马', numbers: [12, 24, 36, 48] },
        { id: 'goat', name: '羊', numbers: [11, 23, 35, 47] },
        { id: 'monkey', name: '猴', numbers: [10, 22, 34, 46] },
        { id: 'rooster', name: '鸡', numbers: [9, 21, 33, 45] },
        { id: 'dog', name: '狗', numbers: [8, 20, 32, 44] },
        { id: 'pig', name: '猪', numbers: [7, 19, 31, 43] }
    ],
    /**
     * 根据号码获取对应的生肖信息
     * 
     * @param {number} number - 号码 (1-49)
     * @returns {Animal|undefined} 生肖对象，如果找不到则返回undefined
     * @example
     * const animal = animalConfig.getAnimalByNumber(6);
     * console.log(animal); // { id: 'rat', name: '鼠', numbers: [6, 18, 30, 42] }
     */
    getAnimalByNumber(number) {
        return this.animals.find(animal => animal.numbers.includes(number));
    },
    
    /**
     * 根据ID获取生肖信息
     * 
     * @param {string} id - 生肖ID
     * @returns {Animal|undefined} 生肖对象，如果找不到则返回undefined
     * @example
     * const animal = animalConfig.getAnimalById('rat');
     * console.log(animal); // { id: 'rat', name: '鼠', numbers: [6, 18, 30, 42] }
     */
    getAnimalById(id) {
        return this.animals.find(animal => animal.id === id);
    }
};

// 赔率配置
export const oddsConfig = {
    tema: {
        zhixuan: 48.5, // 特码直选
        liangmian: {
            da: 1.980, xiao: 1.980, dan: 1.980, shuang: 1.980,
            dadan: 3.960, dashuang: 3.960, xiaodan: 3.960, xiaoshuang: 3.960,
            heda: 1.980, hexiao: 1.980, hedan: 1.980, heshuang: 1.980,
            weida: 1.980, weixiao: 1.980, jiaqin: 1.979, yeshou: 1.900,
            hongbo: 2.790, lanbo: 2.980, lvbo: 2.980
        }
    },
    zhengma: {
        renxuan: 7.160, // 正码任选
        zheng1te: 47.000, // 正码1特
        zheng2te: 47.000, // 正码2特
        zheng3te: 47.000, // 正码3特
        zheng4te: 47.000, // 正码4特
        zheng5te: 47.000, // 正码5特
        zheng6te: 47.000, // 正码6特
        liangmian: {
            da: 1.980, xiao: 1.980, dan: 1.980, shuang: 1.980,
            dadan: 3.960, dashuang: 3.960, xiaodan: 3.960, xiaoshuang: 3.960,
            heda: 1.980, hexiao: 1.980, hedan: 1.980, heshuang: 1.980,
            weida: 1.980, weixiao: 1.980, jiaqin: 1.979, yeshou: 1.900,
            hongbo: 2.790, lanbo: 2.980, lvbo: 2.980
        }
    },
    lianma: {
        sanquanzhong: 800.000, // 三全中
        sanzhonger: 35.000, // 三中二
        erquanzhong: 70.000, // 二全中
        erzhongte: {
            erzhong: 55.000, // 二中
            zhongte: 48.000  // 中特
        },
        techuan: 173.000 // 特串
    },
    banbo: {
        red_big: 6.699, // 红波大
        red_small: 4.700, // 红波小
        red_odd: 5.800, // 红波单
        red_even: 5.199, // 红波双
        red_sum_odd: 5.199, // 红波合单
        red_sum_even: 5.800, // 红波合双
        green_big: 5.800, // 绿波大
        green_small: 6.700, // 绿波小
        green_odd: 5.800, // 绿波单
        green_even: 6.700, // 绿波双
        green_sum_odd: 6.700, // 绿波合单
        green_sum_even: 5.800, // 绿波合双
        blue_big: 5.200, // 蓝波大
        blue_small: 6.700, // 蓝波小
        blue_odd: 5.800, // 蓝波单
        blue_even: 5.800, // 蓝波双
        blue_sum_odd: 5.800, // 蓝波合单
        blue_sum_even: 5.800 // 蓝波合双
    },
    shengxiao: {
        // 特肖赔率
        texiao: {
            normal: 11.100, // 普通生肖（4个号码）
            benming: 9.500  // 本命生肖（蛇，5个号码）
        },
        // 一肖赔率
        yixiao: {
            normal: 2.090, // 普通生肖
            benming: 1.779 // 本命生肖
        },
        // 二肖连赔率
        erxiaolian: {
            withBenming: 4.050, // 含本命生肖
            withoutBenming: 4.750 // 不含本命生肖
        },
        // 三肖连赔率
        sanxiaolian: {
            withBenming: 10.049, // 含本命生肖
            withoutBenming: 12.049 // 不含本命生肖
        },
        // 四肖连赔率
        sixiaolian: {
            withBenming: 29.049, // 含本命生肖
            withoutBenming: 35.549 // 不含本命生肖
        },
        // 总肖赔率
        zongxiao: {
            '234xiao': 14.999,
            '5xiao': 3.089,
            '6xiao': 1.969,
            '7xiao': 5.419,
            'dan': 1.979,
            'shuang': 1.839
        },
        // 正肖赔率
        zhengxiao: {
            normal: 1.959, // 普通生肖
            benming: 1.633 // 本命生肖
        },
        // 合肖中赔率
        hexiaozhong: {
            2: 5.810, 3: 3.870, 4: 2.900, 5: 2.320, 6: 1.940,
            7: 1.669, 8: 1.450, 9: 1.299, 10: 1.170
        },
        // 合肖不中赔率
        hexiaobuzhong: {
            2: 1.160, 3: 1.299, 4: 1.460, 5: 1.669, 6: 1.950,
            7: 2.330, 8: 2.910, 9: 3.890, 10: 3.830
        }
    },
    weishu: {
        // 特码头尾赔率
        tematowei: {
            head: {
                0: 5.100,   // 0头赔率
                1: 4.500,   // 1头赔率
                2: 4.500,   // 2头赔率
                3: 4.500,   // 3头赔率
                4: 4.500    // 4头赔率
            },
            tail: {
                0: 11.749,  // 0尾赔率
                1: 9.200,   // 1尾赔率
                2: 9.200,   // 2尾赔率
                3: 9.200,   // 3尾赔率
                4: 9.200,   // 4尾赔率
                5: 9.200,   // 5尾赔率
                6: 9.200,   // 6尾赔率
                7: 9.200,   // 7尾赔率
                8: 9.200,   // 8尾赔率
                9: 9.200    // 9尾赔率
            }
        },
        // 连尾赔率
        erweilian: {
            withZero: 3.570,    // 含0尾
            withoutZero: 3.450  // 不含0尾
        },
        sanweilian: {
            withZero: 7.520,    // 含0尾
            withoutZero: 6.969  // 不含0尾
        },
        siweilian: {
            withZero: 18.100,   // 含0尾
            withoutZero: 15.599 // 不含0尾
        },
        // 正特尾数赔率
        zhengteweishu: {
            withZero: 2.098,    // 含0尾
            withoutZero: 1.787  // 不含0尾
        }
    },
    buzhong: {
        wubuzhong: 2.201,   // 五不中
        liubuzhong: 2.619,  // 六不中
        qibuzhong: 3.109,   // 七不中
        babuzhong: 3.749,   // 八不中
        jiubuzhong: 4.549,  // 九不中
        shibuzhong: 5.449   // 十不中
    },
    sebo: {
        hongbo: 2.689,      // 红波
        lvbo: 3.049,        // 绿波
        lanbo: 3.049,       // 蓝波
        he: 25.399          // 和
    }
};

// 尾数配置
export const tailConfig = {
    head: [0, 1, 2, 3, 4], // 头(十位)：0-4
    tail: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] // 尾(个位)：0-9
};

// 投注规则文本配置
export const rulesConfig = {
    tema: {
        zhixuan: '从1-49中选择一位特码，赔率：<span class="odds">48.5</span>',
        liangmian: '开奖号码最后一位为特码。大于或等于25为特码大，小于或等于24为特码小；奇数为单，偶数为双；特码两个数相加后得数，奇数为合单，偶数为合双，小于等于6为合小，大于6为合大；尾大尾小即看特码个位数值，小于等于4为小，大于4为大；特码为49时为和（注：和局退本金），不算任何大小单双，但算家禽/野兽/波色。'
    },
    zhengma: {
        renxuan: '从1-49中任选1个或多个号码，每个号码为一注，所选号码在开奖号码前六位中存在，即为中奖。赔率：<span class="odds">7.160</span>',
        zheng1te: '从1-49中任选1个或多个号码，每个号码为一注，所选号码与开奖号码第一位相同，即为中奖。赔率：<span class="odds">47.000</span>',
        zheng2te: '从1-49中任选1个或多个号码，每个号码为一注，所选号码与开奖号码第二位相同，即为中奖。赔率：<span class="odds">47.000</span>',
        zheng3te: '从1-49中任选1个或多个号码，每个号码为一注，所选号码与开奖号码第三位相同，即为中奖。赔率：<span class="odds">47.000</span>',
        zheng4te: '从1-49中任选1个或多个号码，每个号码为一注，所选号码与开奖号码第四位相同，即为中奖。赔率：<span class="odds">47.000</span>',
        zheng5te: '从1-49中任选1个或多个号码，每个号码为一注，所选号码与开奖号码第五位相同，即为中奖。赔率：<span class="odds">47.000</span>',
        zheng6te: '从1-49中任选1个或多个号码，每个号码为一注，所选号码与开奖号码第六位相同，即为中奖。赔率：<span class="odds">47.000</span>',
        zheng1lm: '开奖号码第一位，大于或等于25为大，小于或等于24为小；奇数为单，偶数为双；合单合双为两个数相加后得数的单双，小于等于6为合小，大于6为合大；尾大尾小即看个位数值，小于等于4为小，大于4为大；为49时为和（注：和局退本金），不算任何大小单双，但算家禽/野兽/波色。',
        zheng2lm: '开奖号码第二位，大于或等于25为大，小于或等于24为小；奇数为单，偶数为双；合单合双为两个数相加后得数的单双，小于等于6为合小，大于6为合大；尾大尾小即看个位数值，小于等于4为小，大于4为大；为49时为和（注：和局退本金），不算任何大小单双，但算家禽/野兽/波色。',
        zheng3lm: '开奖号码第三位，大于或等于25为大，小于或等于24为小；奇数为单，偶数为双；合单合双为两个数相加后得数的单双，小于等于6为合小，大于6为合大；尾大尾小即看个位数值，小于等于4为小，大于4为大；为49时为和（注：和局退本金），不算任何大小单双，但算家禽/野兽/波色。',
        zheng4lm: '开奖号码第四位，大于或等于25为大，小于或等于24为小；奇数为单，偶数为双；合单合双为两个数相加后得数的单双，小于等于6为合小，大于6为合大；尾大尾小即看个位数值，小于等于4为小，大于4为大；为49时为和（注：和局退本金），不算任何大小单双，但算家禽/野兽/波色。',
        zheng5lm: '开奖号码第五位，大于或等于25为大，小于或等于24为小；奇数为单，偶数为双；合单合双为两个数相加后得数的单双，小于等于6为合小，大于6为合大；尾大尾小即看个位数值，小于等于4为小，大于4为大；为49时为和（注：和局退本金），不算任何大小单双，但算家禽/野兽/波色。',
        zheng6lm: '开奖号码第六位，大于或等于25为大，小于或等于24为小；奇数为单，偶数为双；合单合双为两个数相加后得数的单双，小于等于6为合小，大于6为合大；尾大尾小即看个位数值，小于等于4为小，大于4为大；为49时为和（注：和局退本金），不算任何大小单双，但算家禽/野兽/波色。',
        liangmian: '开奖号码第N位，大于或等于25为大，小于或等于24为小；奇数为单，偶数为双；合单合双为两个数相加后得数的单双，小于等于6为合小，大于6为合大；尾大尾小即看个位数值，小于等于4为小，大于4为大；为49时为和（注：和局退本金），不算任何大小单双，但算家禽/野兽/波色。'
    },
    lianma: {
        sanquanzhong: '至少选择三个号码，每三个号码为一组合。每三个号码都开正码即中奖（不含特码）。赔率：<span class="odds">800.000</span> <i class="fas fa-info-circle"></i>',
        sanzhonger: '至少选择三个号码，每三个号码为一组合。每其中至少有两个号码开正码即中奖。赔率：<span class="odds">35.000</span> <i class="fas fa-info-circle"></i>',
        erquanzhong: '至少选择两个号码，每二个号码为一组合。二个号码都开正码即中奖（不含特码）。赔率：<span class="odds">70.000</span> <i class="fas fa-info-circle"></i>',
        erzhongte: '至少选择两个号码，每二个号码为一组合。二个号码都开正码即中奖（含特码），中奖规则详见赔率表。<i class="fas fa-info-circle"></i>',
        techuan: '至少选择两个号码，每二个号码为一组合。其中一个是正码，一个是特别号码，即中中奖。赔率：<span class="odds">173.000</span> <i class="fas fa-info-circle"></i>'
    },
    banbo: {
        temabanbo: '根据特码对应的特性区分，分为红蓝绿三个波色，以及号码大于或等于25为大，小于或等于24为小。合单合双为开奖号码的十位数和个位数相加后得数的单双，特码是49时为和（注：和局退本金），不算任何大小单双，下述内容与号码特性完全吻合，即为中奖。<i class="fas fa-info-circle"></i>'
    },
    shengxiao: {
        texiao: '从十二生肖中任选1个或多个，每个生肖为一注，所选生肖与特码对应的生肖相同即中奖。普通生肖赔率：<span class="odds">11.100</span>，蛇生肖赔率：<span class="odds">9.500</span>',
        yixiao: '从十二生肖中任选1个或多个，每个生肖为一注，开奖号码（含特码）中含有投注所属生肖即中奖。普通生肖赔率：<span class="odds">2.090</span>，蛇生肖赔率：<span class="odds">1.779</span>',
        erxiaolian: '至少选择两个生肖，每二个生肖为一组合，开奖号码中含有投注所属全部生肖即中奖。含本命赔率：<span class="odds">4.050</span>，不含本命赔率：<span class="odds">4.750</span>',
        sanxiaolian: '至少选择三个生肖，每三个生肖为一组合，开奖号码中含有投注所属全部生肖即中奖。含本命赔率：<span class="odds">10.049</span>，不含本命赔率：<span class="odds">12.049</span>',
        sixiaolian: '至少选择四个生肖，每四个生肖为一组合，开奖号码中含有投注所属全部生肖即中奖。含本命赔率：<span class="odds">29.049</span>，不含本命赔率：<span class="odds">35.549</span>',
        zongxiao: '挑选正码加特码的对应生肖总和数(不含重复出现生肖)进行投注，与所投注之预计开出之生肖总数和相同，则视为中奖。',
        zhengxiao: '依据开出的所有正码为主。若当期6个正码，只要有1个落在下注生肖范围内，视为中奖。如超过1个正码落在下注生肖范围内，派彩将倍增！',
        hexiaozhong: '选择2~10个生肖，若当期特码开奖号码在此组合内，即为中奖；若当期特码为49，所有组合为和局（注：和局退本金）。',
        hexiaobuzhong: '选择2~10个生肖，若当期开奖特码未在所选生肖组合内，即为中奖；若当期特码为49，所有组合为和局（注：和局退本金）。'
    },
    weishu: {
        tematowei: '选择特码头(十位)或尾(个位)的数字进行投注，与特码相同，即为中奖。头赔率：<span class="odds">9.200</span>，尾赔率：<span class="odds">4.500</span>',
        erweilian: '至少选择两个尾数，每两个尾数为一组合，开奖号码（含特码）中含有投注对应全部尾数，即为中奖。含0尾赔率：<span class="odds">3.570</span>，不含0尾赔率：<span class="odds">3.450</span>',
        sanweilian: '至少选择三个尾数，每三个尾数为一组合，开奖号码（含特码）中含有投注对应全部尾数，即为中奖。含0尾赔率：<span class="odds">7.520</span>，不含0尾赔率：<span class="odds">6.969</span>',
        siweilian: '至少选择四个尾数，每四个尾数为一组合，开奖号码（含特码）中含有投注对应全部尾数，即为中奖。含0尾赔率：<span class="odds">18.100</span>，不含0尾赔率：<span class="odds">15.599</span>',
        zhengteweishu: '选择尾数进行投注，当期号码(包含正、特码)，含所属尾数的一个或多个号码即中奖，但派彩只派一次，即不论同尾数号码出现一个或多个号码都只派彩一次。含0尾赔率：<span class="odds">2.098</span>，不含0尾赔率：<span class="odds">1.787</span>'
    },
    buzhong: {
        wubuzhong: '至少选择五个号码，每五个号码为一注，所有号码均未在开奖号码中出现，即为中奖。赔率：<span class="odds">2.201</span>',
        liubuzhong: '至少选择六个号码，每六个号码为一注，所有号码均未在开奖号码中出现，即为中奖。赔率：<span class="odds">2.619</span>',
        qibuzhong: '至少选择七个号码，每七个号码为一注，所有号码均未在开奖号码中出现，即为中奖。赔率：<span class="odds">3.109</span>',
        babuzhong: '至少选择八个号码，每八个号码为一注，所有号码均未在开奖号码中出现，即为中奖。赔率：<span class="odds">3.749</span>',
        jiubuzhong: '至少选择九个号码，每九个号码为一注，所有号码均未在开奖号码中出现，即为中奖。赔率：<span class="odds">4.549</span>',
        shibuzhong: '至少选择十个号码，每十个号码为一注，所有号码均未在开奖号码中出现，即为中奖。赔率：<span class="odds">5.449</span>'
    },
    sebo: {
        qisebo: '以开出的7个色波，哪种颜色最多为中奖。开出的6个正码各以1个色波计，特别码以1.5个色波计。而以下3种结果视为和局：6个正码开出3蓝3绿，特别码是1.5红；6个正码开出3蓝3红，特别码是1.5绿；6个正码开出3绿3红，特别码是1.5蓝。投注红/绿/蓝波，如开出和局，则退回本金；会员也可投注和，开出和局，即为中奖。'
    }
}; 